/* LUOGU-5461 赦免战俘（分治、递归） */
#include <cstring>
#include <iostream>
using namespace std;

char a[1024][1024];

void pardon(int rb, int cb, int w){
  int h = w / 2;
  for(int r = 0; r < h; ++r){ // 左上
    for(int c = 0; c < h; ++c){
      a[rb + r][cb + c] = 1; // 初值为0，用1代表被赦免更方便。
    }
  }
  if(h == 1){
    return;
  }
  pardon(rb, cb + h, h); // 右上
  pardon(rb + h, cb, h); // 左下
  pardon(rb + h, cb + h, h); // 右下
}

int main(){
  int n;
  cin >> n;
  int w = (1 << n);
  pardon(0, 0, w);
  for(int i = 0; i < w; ++i){
    for(int j = 0; j < w; ++j){
      cout << (1 - a[i][j]) << (j < w-1 ? ' ' : '\n'); // 标志与题意相反，所以取反。
    }
  }
  cout << flush;
  return 0;
}
